{$CLEO .cs}
{$USE CLEO+}
{$USE newOpcodes}
{$USE ini}

0000: NOP

script_name "Hats for peds"

// By ArtemQa146

if
    is_game_first_start
then
    for 30@ = 1 to 7 step 1
        0AD3: 1@v = string_format "Modelsqa\capqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "capqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    for 30@ = 1 to 4 step 1
        0AD3: 1@v = string_format "Modelsqa\hatqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "hatqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    for 30@ = 1 to 3 step 1
        0AD3: 1@v = string_format "Modelsqa\skcqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "skcqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    for 30@ = 1 to 3 step 1
        0AD3: 1@v = string_format "Modelsqa\skcqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "nicqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    for 30@ = 1 to 2 step 1
        0AD3: 1@v = string_format "Modelsqa\htmqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "htmqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    for 30@ = 1 to 3 step 1
        0AD3: 1@v = string_format "Modelsqa\boaqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "boaqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    for 30@ = 1 to 5 step 1
        0AD3: 1@v = string_format "Modelsqa\bowqa%d" 30@
        0F00: load_special_model_dff 1@v txd "modelsqa\Hats For Peds" store_to 0@
        0AD3: 1@v = string_format "bowqa%d" 30@
        0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key 1@v
    end
    0F00: load_special_model_dff "modelsqa\copqa" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "copqa"
    0F00: load_special_model_dff "modelsqa\copqa2" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "copqa2"
    0F00: load_special_model_dff "modelsqa\glsqa1" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "glsqa1"
    0F00: load_special_model_dff "modelsqa\glsqa2" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "glsqa2"
    0F00: load_special_model_dff "modelsqa\bckpckqa1" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpckqa1"
    0F00: load_special_model_dff "modelsqa\bckpckqa2" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpckqa2"
    0F00: load_special_model_dff "modelsqa\bckpckqa3" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpckqa3"
    0F00: load_special_model_dff "modelsqa\gngmqa1" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "gngmqa1"
    0F00: load_special_model_dff "modelsqa\gngmqa2" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "gngmqa2"
    0F00: load_special_model_dff "modelsqa\bckpkq" txd "modelsqa\Hats For Peds" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpkq"
end

const
    find = 31@
    ped = 30@
    Render_already = 29@
    iBuffer = 28@
    mem_adr = 0x11
    percent_chance = 40
end

get_label_pointer iBuffer = label @Buffer

// 1-7

for 2@ = 1 to 7 step 1
    0AD3: 10@v = string_format "capqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    3@ = 2@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end

// 8-11

for 2@ = 1 to 4 step 1
    0AD3: 10@v = string_format "hatqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    4@ = 7
    005A: 4@ += 2@  // (int)
    3@ = 4@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end

// 12-14

for 2@ = 1 to 3 step 1
    0AD3: 10@v = string_format "skcqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    4@ = 11
    005A: 4@ += 2@  // (int)
    3@ = 4@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end

// 15-17

for 2@ = 1 to 3 step 1
    0AD3: 10@v = string_format "nicqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    4@ = 14
    005A: 4@ += 2@  // (int)
    3@ = 4@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end

// 18-19

for 2@ = 1 to 2 step 1
    0AD3: 10@v = string_format "htmqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    4@ = 17
    005A: 4@ += 2@  // (int)
    3@ = 4@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end

// 20-22

for 2@ = 1 to 3 step 1
    0AD3: 10@v = string_format "boaqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    4@ = 19
    005A: 4@ += 2@  // (int)
    3@ = 4@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end

// 23-27

for 2@ = 1 to 5 step 1
    0AD3: 10@v = string_format "bowqa%d" 2@
    1@ = 0
    0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key 10@v
    4@ = 22
    005A: 4@ += 2@  // (int)
    3@ = 4@ * 4
    write_struct_offset iBuffer offset 3@ size 4 value 1@
end


1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "copqa"
4@ = 28
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "copqa2"
4@ = 29
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "glsqa1"
4@ = 30
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "glsqa2"
4@ = 31
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpckqa1"
4@ = 32
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpckqa2"
4@ = 33
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpckqa3"
4@ = 34
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "gngmqa1"
4@ = 35
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "gngmqa2"
4@ = 36
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@
1@ = 0
0AF0: 1@ = read_int_from_ini_file "cleo\Hats for Peds.ini" section "Models" key "bckpkq"
4@ = 37
3@ = 4@ * 4
write_struct_offset iBuffer offset 3@ size 4 value 1@

while true
wait 1000
    if
        player.Defined(0)
    then
    
        find = 0
        while 0EA7: get_any_char_no_save_recursive find progress_to find char_to ped
            0A96: 2@ = actor ped struct
            0D4E: 2@ = read_struct 2@ offset mem_adr size 1
            if or
                003B:   $player_actor == ped  // (int)
                2@ == 1
                not $ACTIVE_INTERIOR == 0
            then
                continue
            end
            
            if
                00DF:   actor ped driving
            then
                0@ = Actor.CurrentCar(ped)
                0E12: get_vehicle 0@ subclass_to 1@
                if
                    1@ == 9
                then
                    continue
                end
            end

                
            Render_already = false
            
            // 
            if or
                02F2:   actor ped model == 280
                02F2:   actor ped model == 281
                02F2:   actor ped model == 282
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Cop
                end
                Render_already = true
            end
            
            // 
            if or
                02F2:   actor ped model == 56
                02F2:   actor ped model == 226
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset -0.02 -0.06 0.025 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.09 1.09 1.15
                end
                Render_already = true
            end
            if or
                02F2:   actor ped model == 211
                02F2:   actor ped model == 93
                02F2:   actor ped model == 233
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset -0.00 -0.05 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.13 1.09 1.17
                end
                Render_already = true
            end
            
            // 

            if
                02F2:   actor ped model == 23
            then
                if
                    0E4D: random_percent percent_chance
                then
                    5@ = 37
                    5@ *= 4
                    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 3 offset -0.02 -0.12 0.0 rotation 270.0 90.0 90.0 store_to 1@
                end
                Render_already = true
            end

            if
                02F2:   actor ped model == 7
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.03 -0.05 0.025 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.05 1.05 1.05
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 14
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.03 -0.035 0.025 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.12 1.12 1.2
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 15
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset -0.005 -0.035 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.05 1.05 1.05
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 20
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.005 -0.055 0.025 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.07
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 21
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.08
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 44
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 0.9 0.9 1.03
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 45
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.01 -0.005 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.085 1.085 1.05
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 47
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.025 -0.04 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.12
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 48
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.01 -0.05 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.14
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 58
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.005 -0.02 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.05 1.05 1.0
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 60
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.025 0.015 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.07 1.07 1.125
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 95
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset -0.01 -0.03 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.05 1.05 1.0
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 170
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.1
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 184
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.01 -0.015 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.12
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 188
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.01 -0.04 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.1 1.1 1.12
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 221
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.015 -0.05 0.025 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.17 1.17 1.32
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 222
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.005 -0.05 0.025 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.17 1.17 1.32
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 229
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset -0.005 -0.035 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.03 1.05 1.07
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 234
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset -0.005 -0.035 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.03 1.05 1.02
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 236
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.0 -0.035 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.03 1.05 1.02
                end
                Render_already = true
            end
            if
                02F2:   actor ped model == 250
            then
                if
                    0E4D: random_percent percent_chance
                then
                    gosub @Choice
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.01 -0.02 0.02 rotation 0 0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.09 1.09 1.09
                end
                Render_already = true
            end
            
            if or
                02F2:   actor ped model == 51
                02F2:   actor ped model == 52
                02F2:   actor ped model == 99
            then
                if
                    0E4D: random_percent percent_chance
                then
                    0209: 5@ = random_int_in_ranges 1 3
                    if
                        5@ == 1
                    then
                        5@ = 34
                        5@ *= 4
                        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    else
                        5@ = 33
                        5@ *= 4
                        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    end
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 3 offset 0.10 -0.12 0.0 rotation 270.0 90.0 90.0 store_to 1@
                end
                Render_already = true
            end
            
            if 
                02F2:   actor ped model == 96
            then
                if
                    0E4D: random_percent percent_chance
                then
                    5@ = 32
                    5@ *= 4
                    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 3 offset 0.10 -0.15 0.0 rotation 270.0 90.0 90.0 store_to 1@
                end
                Render_already = true
            end
            
            if or
                02F2:   actor ped model == 106
                02F2:   actor ped model == 107
            then
                if
                    0E4D: random_percent percent_chance
                then
                    0209: 5@ = random_int_in_ranges 1 3
                    5@ = 35
                    5@ *= 4
                    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 5 offset 0.015 0.02 -0.005 rotation 0 -5.0 90.0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.16 1.05 1.2
                end
                Render_already = true
            end
            
            if or
                02F2:   actor ped model == 102
                02F2:   actor ped model == 104
            then
                if
                    0E4D: random_percent percent_chance
                then
                    0209: 5@ = random_int_in_ranges 1 3
                    5@ = 36
                    5@ *= 4
                    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 5 offset 0.015 0.02 -0.005 rotation 0 -5.0 90.0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.16 1.05 1.2
                end
                Render_already = true
            end
            
            if 
                02F2:   actor ped model == 186
            then
                if
                    0E4D: random_percent percent_chance
                then
                    5@ = 30
                    5@ *= 4
                    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 6 offset 0.01 0.025 -0.026 rotation 0 10.0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.0 0.9 1.02
                end
                Render_already = true
            end
            
            if
                02F2:   actor ped model == 188
            then
                if
                    0E4D: random_percent percent_chance
                then
                    5@ = 30
                    5@ *= 4
                    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
                    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 6 offset 0.01 0.005 -0.026 rotation 0 10.0 0 store_to 1@
                    0E37: set_render_object_scale 1@ 1.0 0.9 1.02
                end
                Render_already = true
            end
            

            if
                Render_already == true
            then
                0A96: 2@ = actor ped struct
                0E28: write_struct 2@ offset mem_adr size 1 value 1
            end
            
        end
    end
end


:Choice
0209: 1@ = random_int_in_ranges 3 7
0D59: get_current_weather_to 2@
0E40: get_current_hour 3@
if or
    2@ == 8
    2@ == 16
    3@ > 21
    3@ < 5
then
    0209: 1@ = random_int_in_ranges 1 7
end

if or
    02F2:   actor ped model == 56
    02F2:   actor ped model == 93
    02F2:   actor ped model == 211
    02F2:   actor ped model == 226
    02F2:   actor ped model == 233
then
    0209: 2@ = random_int_in_ranges 1 3
    if or
        02F2:   actor ped model == 93 //  
        02F2:   actor ped model == 233 //  
        02F2:   actor ped model == 211 //  
        2@ == 1
    then
        1@ = 3
    else
        1@ = 7
    end
end


if 1@ == 1
then gosub @SkullCap
end
if 1@ == 2
then gosub @KnitCap
end
if 1@ == 3
then gosub @Cap
end
if 1@ == 4
then gosub @Hat
end
if 1@ == 5
then gosub @Hatman
end
if 1@ == 6
then gosub @Boater
end
if 1@ == 7
then gosub @Bowler
end
return

:Cap
0209: 5@ = random_int_in_ranges 1 8
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:Hat
0209: 5@ = random_int_in_ranges 1 5
5@ += 7
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:Boater
0209: 5@ = random_int_in_ranges 1 4
5@ += 19
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:Bowler
0209: 5@ = random_int_in_ranges 1 6
5@ += 22
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:SkullCap
0209: 5@ = random_int_in_ranges 1 4
5@ += 11
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:KnitCap
0209: 5@ = random_int_in_ranges 1 4
5@ += 14
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:Hatman
0209: 5@ = random_int_in_ranges 1 3
5@ += 17
5@ *= 4
read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
return

:Cop
0209: 2@ = random_int_in_ranges 1 6
if and
    82F2:   not actor ped model == 282
    2@ == 1 //  
then
    5@ = 28
    5@ *= 4
    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.025 rotation 0 0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 1.0 1.05
end
if or
    02F2:   actor ped model == 282
    2@ == 2 //  
then
    0209: 3@ = random_int_in_ranges 1 3
    if 3@ == 1
    then 
        5@ = 30
        5@ *= 4
        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    else 
        5@ = 31
        5@ *= 4
        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    end
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 6 offset 0.01 0.025 -0.026 rotation 0 10.0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 0.9 1.02
end
if and
    82F2:   not actor ped model == 282
    2@ == 3 //  
then
    5@ = 28
    5@ *= 4
    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.025 rotation 0 0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 1.0 1.05
    0209: 3@ = random_int_in_ranges 1 3
    if 3@ == 1
    then
        5@ = 30
        5@ *= 4
        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    else
        5@ = 31
        5@ *= 4
        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    end
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 6 offset 0.01 0.025 -0.026 rotation 0 10.0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 0.9 1.02
end
if
    2@ == 4 //   
then
    5@ = 29
    5@ *= 4
    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.025 rotation 0 0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 1.0 1.05
    0209: 3@ = random_int_in_ranges 1 3
    if 3@ == 1
    then
        5@ = 30
        5@ *= 4
        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    else
        5@ = 31
        5@ *= 4
        read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    end
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 6 offset 0.01 0.025 -0.026 rotation 0 10.0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 0.9 1.02
end
if
    2@ == 5 // 
then
    5@ = 29
    5@ *= 4
    read_struct_offset 0@ iBuffer offset 5@ size 4   // Read ID of Model 2
    0F02: create_render_object_to_char_bone_from_special ped special_model 0@ bone 7 offset 0.02 -0.03 0.025 rotation 0 0 0 store_to 1@
    0E37: set_render_object_scale 1@ 1.0 1.0 1.05
end
return


:Buffer
hex
    00(160)    // 400 bytes - can store 100 int values
end